import { NextRequest, NextResponse } from 'next/server';
import { promises as fs } from 'fs';
import path from 'path';

// 支持的图片格式
const IMAGE_EXTENSIONS = ['.jpg', '.jpeg', '.png', '.gif', '.bmp', '.webp'];

export async function GET(
  request: NextRequest,
  { params }: { params: { filename: string } }
) {
  try {
    const { filename } = params;
    
    if (!filename) {
      return NextResponse.json(
        { error: '文件名不能为空' },
        { status: 400 }
      );
    }

    // 构建文件路径
    const filePath = path.join(process.cwd(), 'sd-model', 'file-log', filename);
    
    // 检查文件是否存在
    try {
      await fs.access(filePath);
    } catch (error) {
      return NextResponse.json(
        { error: '文件不存在' },
        { status: 404 }
      );
    }

    // 检查文件扩展名
    const ext = path.extname(filename).toLowerCase();
    if (!IMAGE_EXTENSIONS.includes(ext)) {
      return NextResponse.json(
        { error: '不支持的文件格式' },
        { status: 400 }
      );
    }

    // 读取文件信息
    const stats = await fs.stat(filePath);
    
    // 读取图片文件并转换为base64
    const imageBuffer = await fs.readFile(filePath);
    const imageData = imageBuffer.toString('base64');
    
    // 获取图片MIME类型
    const getMimeType = (extension: string): string => {
      switch (extension.toLowerCase()) {
        case '.png':
          return 'image/png';
        case '.jpg':
        case '.jpeg':
          return 'image/jpeg';
        case '.gif':
          return 'image/gif';
        case '.webp':
          return 'image/webp';
        case '.bmp':
          return 'image/bmp';
        default:
          return 'image/png';
      }
    };

    return NextResponse.json({
      success: true,
      filename,
      size: stats.size,
      createTime: stats.birthtime.toISOString(),
      imageData,
      mimeType: getMimeType(ext)
    });

  } catch (error) {
    console.error('获取图片错误:', error);
    return NextResponse.json(
      { 
        error: '获取图片失败',
        detail: error instanceof Error ? error.message : '未知错误'
      },
      { status: 500 }
    );
  }
}
